#include <stdio.h>
#include "StackInt.h"

int F_stk(int n);

int main(void) {
    // for (int i = 0; i < 5; i++)
    // {
    //     int res = F_stk(i);
    //     printf("%d: %d\n", i, res);
    // }
    int res = F_stk(5);
    printf("%d: %d\n", 5, res);
    return 0;
}

int F_stk(int n) { 
    Stack S; 
    int d = 0; //临时变量 
    int sum = 1; //必须利用此变量返回最终答案
    S = CreateStack(); 
    if(n == 0) 
        return sum; 
    else {
        for (d = n; d > 0; d--) {
            Push(S, d);
        }
        while (!StackEmpty(S)) {
            d = Pop(S);
            sum = sum * d + 1;
        }
    }
    free(S);
    return sum;
}